<?php
	/**
	 * Обработка запроса на изменение в дереве категорий.
	 * 
	 * @author Костин Алексей Васильевич aka Volt(220)
	 * @copyright Copyright (c) 2010, Костин Алексей Васильевич
	 * @license http://www.gnu.org/licenses/gpl-3.0.html GNU Public License
	 * @version 1.0
	 * @package HomeMoney
	 */

	/**
	 * Подключение настроек. 
	 */
	require_once("../ini.php");
	$catTree=new FHTree("categ_tree", "id_cat", "id_par", "level", "categ", "cat");

	if ($_SERVER["REQUEST_METHOD"]!="POST") die();
	
	$idPar=($_POST["idPar"]+0) ? $_POST["idPar"]+0 :1;
	try{
		switch ($_POST["act"]){
			case "new": $catTree->add($_POST["cat"], $idPar, DBTree::CHILD_NAME); break;
			case "save": saveCat(); break;
			case "del": deleteCat(); break;
		}
	}catch(SqlException $e){
			echo "<p class='err'>Произошла ошибка при работе с БД. Запрос не выполнен.</p>";
			exit;
	}catch(FormatException $e){
			echo "<p class='err'>".$e->getMessage()."</p>";
			exit;
	}
	echo "<p class='vseOK'>Сделано</p>";
	exit;
		
	/**
	 * Изменяет информацию о существующей категории.
	 */
	function saveCat(){
		global $catTree;
		$DB=SQLDBFactory::getDB();
		
		$cat=$DB->escapeString($_POST["cat"]);
		$idCat=$_POST["idCat"]+0;

		if (!$idCat){
			echo "<p class='err'>Не выбрана категория для обновления.</p>";
			exit;
		}
		
		$DB->update("update categ set cat=$cat where id=$idCat");
		
		$idPar=$catTree->getParent($idCat);
		if ($idPar!=$_POST["idPar"]+0){
			$catTree->changePar($idCat, $_POST["idPar"]+0);
		}
	}
	
	/**
	 * Удаляет категорию.
	 */
	function deleteCat(){
		global $catTree;
		try{
			$catTree->deleteSubTree($_POST["idCat"]);
		}catch(SqlException $e){
			echo "<p class='err'>Невозможно удалить категорию. Некоторые товары принадлежат ей.</p>";
			exit;
		}
	}